//package com.xiaozhen.security.aspect;
//
//import com.xiaozhen.common.core.constant.UserConstants;
//import com.xiaozhen.common.core.utils.UserUtils;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.aspectj.lang.ProceedingJoinPoint;
//import org.aspectj.lang.annotation.Around;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Pointcut;
//import org.springframework.stereotype.Component;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * HISTORY
// *
// * @author zhenweisheng
// * @date 2021/8/17 15:58
// * @description:
// */
//@Component
//@Aspect
//@Slf4j
//public class ControllerAspect {
//
//    /**
//     * 拦截所有@RestController标识的类，也就是controller类
//     */
//    @Pointcut("@within(org.springframework.web.bind.annotation.RestController)")
//    public void pointCutRest() {
//    }
//
//    /**
//     * 拦截器具体实现
//     *
//     * @param: pjp
//     * @return: Object
//     */
//    @Around("pointCutRest()")
//    public Object methodRPHandler(ProceedingJoinPoint pjp) {
//        return methodHandler(pjp);
//    }
//
//    /**
//     * 拦截器具体实现
//     *
//     * @param pjp 切点 所有返回对象Page
//     * @return R  结果包装
//     */
//    private Object methodHandler(ProceedingJoinPoint pjp) {
//        long startTime = System.currentTimeMillis();
//
//        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//        HttpServletRequest request = attributes.getRequest();
//
//        String pathInfo = request.getRequestURI();
//        log.info("---- 请求路径:{} ----", pathInfo);
//        String sessionId = request.getSession().getId();
//        log.info("---- 请求session:{} ----", sessionId);
//        //用户id
//        String userId = request.getHeader(UserConstants.USER_HEADER);
//        Map<String, String> userInfo = new HashMap<>();
//        userInfo.put(UserConstants.USER_HEADER, userId);
//        log.info("----userId:{}----", userId);
//        //租户ID
//        String tenantId = request.getHeader(UserConstants.TENANT_HEADER);
//        userInfo.put(UserConstants.TENANT_HEADER, tenantId);
//        log.info("----tenantId:{}----", tenantId);
//        if (StringUtils.isNotBlank(userId)) {
//            UserUtils.setCurrentUserInfo(userInfo);
//        }
//
//        Object result;
//        try {
//            result = pjp.proceed();
//            log.debug(pjp.getSignature() + "use time:" + (System.currentTimeMillis() - startTime));
//        } catch (Throwable e) {
//            log.error("异常信息：", e);
//            throw new RuntimeException(e);
//        } finally {
//        }
//        return result;
//    }
//}
